React Component を NPM パッケージとして公開する
React TypeScript を良い感じにパッケージ化したい!
ちょっと用事があって React Component を NPM パッケージとして公開することがあった
普段 Node 向けか Vue.js 向けのパッケージしか公開したことなかった
React とか Angular とかプロジェクトで使うだけで汎用パッケージ作ってない
ほしいものがだいたいあるかつ特殊な環境に依存しない形で publish したかった
TypeScript React である
勿論 peerDependencies はバンドルに含めたくない
そのためできればバンドラを使いたくない
基本的には拡張子が .jsx ではない
src を含めてプロジェクト側が .tsx を勝手に import することは許容したい
ただ mv みたいなことは見苦しいのでやりたくない
ES6 になっている
最終的な環境
rollup v2 (バンドラ使いたくなかったけどミニマルなら良いかと妥協)
TypeScript (ビルド用)
Babel は使わない
rollup でビルドする
rollup を使うと出力ファイル名をお手軽に変更できる
つまりは .tsx を .js にコンパイルできる
tsc だと .jsx になってつらい 😢
ついでに peerDependencies はバンドルから無視するプラグイン rollup-plugin-peer-deps-external もあって good
この辺雑に入れたけど今は @rollup の namespace にあるものも結構あるっぽいので差し替えたい
minify はしたくないのでしない
node_modules のファイルが壊れているときにいじることがある側の立場からすると minify されてないほうが嬉しい
minify はアプリケーションの責務
成果物
できた